package org.example.service;

import org.example.dto.SaveTestResultDTO;
import org.example.entity.ReactionTestRecord;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 反应测试服务接口
 */
@Service
public interface ReactionTestService {
    
    /**
     * 保存测试结果
     * @param dto 测试结果数据
     * @param userId 用户ID
     * @return 保存后的记录ID
     */
    Long saveTestResult(SaveTestResultDTO dto, Long userId);
    
    /**
     * 获取用户历史记录
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 测试记录列表
     */
    List<ReactionTestRecord> getUserHistory(Long userId, Integer page, Integer size);
    
    /**
     * 获取用户最佳成绩
     * @param userId 用户ID
     * @return 最佳成绩记录
     */
    ReactionTestRecord getUserBestResult(Long userId);
    
    /**
     * 获取排行榜
     * @param limit 数量限制
     * @return 排行榜记录列表
     */
    List<ReactionTestRecord> getRanking(Integer limit);
    
    /**
     * 获取测试记录详情
     * @param recordId 记录ID
     * @param userId 用户ID，用于验证记录归属
     * @return 包含详情的测试记录
     */
    ReactionTestRecord getTestDetail(Long recordId, Long userId);
}